import Vue from 'vue'
import Vuex from 'vuex'
// 引入vuex-logger,相当于是chrome vue-devtools
import createLogger from 'vuex/dist/logger'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    // 小程序启动时就初始化这里,storage=>cart
    cart: wx.getStorageSync('cart') || []
  },
  // state的计算属性
  getters: {
    getCart (state) {
      return state.cart
    }
  },
  mutations: {
    // 删除购物车已勾选的商品
    arrangeCart (state) {
      // 更新
      state.cart = state.cart.filter(item => {
        // 满足条件:不勾选的商品
        return !item.checked
      })
    },
    // 购物车的操作需要更新到state.cart
    updateCart (state, goodsList) {
      state.cart = goodsList.map(item => {
        return {
          goodsId: item.goodsId,
          num: item.num,
          checked: item.checked
        }
      })
    },
    // 加入购物车逻辑
    add2Cart (state, goodsId) {
      let cart = state.cart

      // 从购物车数组里面找一个goodsId为当前商品的goodsId的对象
      let goods = cart.find(item => {
        return item.goodsId === goodsId
      })
      // 判断是否从来没添加到商品
      if (goods) {
        // 非首次添加
        // num++,checked:true
        goods.num = goods.num + 1
        goods.checked = true
      } else {
        // 首次添加
        let newGoods = {
          goodsId: goodsId,
          num: 1,
          checked: true
        }
        state.cart = [newGoods, ...cart]
      }
    }
  },
  plugins: [createLogger()]
})

export default store
